package org.snia.server.ejb.container;

import java.util.Map;

import org.snia.cdmi.auth.Principal;
import org.snia.cdmi.model.AccessControlList;
import org.snia.cdmi.model.Container;
import org.snia.cdmi.model.ContainerProperties;
import org.snia.cdmi.model.MetaContainer;



public interface RemoteContainerOperation {
	public void createContainer(Container container, Principal principal);

	public void createMetaContainer(Container container);

	public boolean exist(String container);
	
	/**
	 * 获得容器的元数据信息
	 * 
	 * @param uuid 容器名称的Base64加密值
	 */
	public MetaContainer getMetaContainer(String uuid);
	
	public void deleteContainer(String container, Principal principal);
	
	public void updateMetaContainer(String uuid, MetaContainer metafile);
	
	public void setAccessControlPolicy(String name, AccessControlList acl, Principal principal);
	
	public Map<String, String> getAccessControlList(String container, Principal principal);
	
	public ContainerProperties getProperties(String container, boolean withMetadata, Principal principal);
	
	public void setUserMetadata(String container, Map<String, String> meta, Principal principal);
	
	public Map<String, String> getUserMetadata(String container, Principal principal);
	
	/****************************对象的相关操作********************************/
}
